/*
 *
 * *******************************************************************
 *   @项目名称: BHex Android
 *   @文件名称: DepthData.java
 *   @Date: 11/29/18 3:43 PM
 *   @Author: chenjun
 *   @Copyright（C）: 2018 BlueHelix Inc.   All rights reserved.
 *   注意：本内容仅限于内部传阅，禁止外泄以及用于其他的商业目的.
 *  *******************************************************************
 *
 */

package io.bhex.chart.entity;

import android.util.Log;

import java.util.ArrayList;
import java.util.List;


public class DepthData {
    private float maxHeight=0;//最大高度
    private int decimalDigitsX=2;//X轴数据小数点位数
    private int decimalDigitsY=2;//Y轴数据小数点位数
    private float scale=1;//缩放比 默认1 整个画布绘制
    private List<DepthItem> datasOfLeft = new ArrayList<DepthItem>();
    private List<DepthItem> datasOfRight = new ArrayList<DepthItem>();

    /**
     * 添加数据
     * @param item
     */
    public void addLeftItem(DepthItem item){
        if (item.getyData()>maxHeight) {
            maxHeight = item.getyData();//最大高度赋值
        }
        datasOfLeft.add(item);
    }

    /**
     * 添加数据集合
     * @param datas
     */
    public void addLeftItemList(List<DepthItem> datas){
        for (DepthItem item : datas) {
            if (item.getyData()>maxHeight) {
                maxHeight = item.getyData();//最大高度赋值
            }
        }
        datas.addAll(datas);
    }

    public float getMaxHeight() {
        return maxHeight;
    }

//    不允许设置最大值，通过统计数据算出
//    public void setMaxHeight(float maxHeight) {
//        this.maxHeight = maxHeight;
//    }

    public float getScale() {
        return scale;
    }

    public void setScale(float scale) {
        this.scale = scale;
    }

    public void setMaxHeight(float maxHeight) {
        this.maxHeight = maxHeight;
    }

    public int getDecimalDigitsX() {
        return decimalDigitsX;
    }

    public void setDecimalDigitsX(int decimalDigitsX) {
        this.decimalDigitsX = decimalDigitsX;
    }

    public int getDecimalDigitsY() {
        return decimalDigitsY;
    }

    public void setDecimalDigitsY(int decimalDigitsY) {
        this.decimalDigitsY = decimalDigitsY;
    }

    public List<DepthItem> getLeftDatas() {
        return datasOfLeft;
    }

    public void setLeftDatas(List<DepthItem> datas) {
        //TODO
        if (!datasOfLeft.isEmpty()) {
            datasOfLeft.clear();
        }
        this.datasOfLeft = datas;
        for (DepthItem item : datas) {
            if (item.getyData()>maxHeight) {
                maxHeight = item.getyData();//最大高度赋值
            }
        }
//        datasOfLeft.addAll(datas);
    }


    /**
     * 添加数据
     * @param item
     */
    public void addRightItem(DepthItem item){
        if (item.getyData()>maxHeight) {
            maxHeight = item.getyData();//最大高度赋值
        }
        datasOfRight.add(item);
    }

    /**
     * 添加数据集合
     * @param datas
     */
    public void addRightItemList(List<DepthItem> datas){
        for (DepthItem item : datas) {
            if (item.getyData()>maxHeight) {
                maxHeight = item.getyData();//最大高度赋值
            }
        }
        datas.addAll(datas);
    }

    public List<DepthItem> getRightDatas() {
        return datasOfRight;
    }

    public void setRightDatas(List<DepthItem> datas) {
        //TODO
        if (!datasOfRight.isEmpty()) {
            datasOfRight.clear();
        }
        this.datasOfRight = datas;
        for (DepthItem item : datas) {
            if (item.getyData()>maxHeight) {
                maxHeight = item.getyData();//最大高度赋值
            }
        }
    }


    public static class DepthItem implements Comparable<DepthItem>{
        private float yData;//y轴数据，相当于每根的高度
        private float xData;//x轴数据
        private float xStart;   //x轴开始坐标
        private float xEnd;//x轴结束坐标

        public float getyData() {
            return yData;
        }

        public void setyData(float yData) {
            this.yData = yData;
        }

        public float getxData() {
            return xData;
        }

        public void setxData(float xData) {
            this.xData = xData;
        }

        public float getxStart() {
            return xStart;
        }

        public void setxStart(float xStart) {
            this.xStart = xStart;
        }

        public float getxEnd() {
            return xEnd;
        }

        public void setxEnd(float xEnd) {
            this.xEnd = xEnd;
        }

        @Override
        public int compareTo(DepthItem o) {
             //自定义比较方法，如果认为此实体本身大则返回1，否则返回-1
            if (this.getxData()>=o.getxData()){
                Log.e("DEPTHDATA:",getxData()+" 大于 " + o.getxData());
                return 1;
            }else{
                Log.e("DEPTHDATA:",getxData()+" 小于 " + o.getxData());
            }
            return -1;
        }
    }
}
